package com.lengchangjing.BehavioralPatterns.InterpreterPattern.example;

/**
 * 加法表达式，是非终结符表达式（NonterminalExpression）。
 */
public class Add extends Expression {

    // 被加数，加数
    private Expression augend, addend;

    /**
     * 构造器
     *
     * @param augend 被加数
     * @param addend 加数
     */
    public Add(Expression augend, Expression addend) {
        this.augend = augend;
        this.addend = addend;
    }

    /**
     * 加法语法解释
     *
     * @param ctx 上下文
     * @return 加法结果
     */
    @Override
    public int interpret(Context ctx) {
        return augend.interpret(ctx) + addend.interpret(ctx);
    }
}
